package com.wande.dataplatform.filecollection.validation.impl;

import cn.hutool.core.util.StrUtil;
import com.wande.dataplatform.filecollection.domain.dto.ValidationError;
import com.wande.dataplatform.filecollection.validation.IValidationRule;
import org.springframework.stereotype.Component;

/**
 * 非空校验规则
 * 校验字段值不能为空
 *
 * @author wande
 */
@Component
public class NotNullValidationRule implements IValidationRule {

    @Override
    public String getRuleType() {
        return "NOT_NULL";
    }

    @Override
    public ValidationError validate(String fieldName, Object value, String ruleConfig) {
        // 检查值是否为空
        if (value == null) {
            return new ValidationError(
                fieldName,
                getRuleType(),
                String.format("字段 [%s] 不能为空", fieldName),
                null,
                null
            );
        }

        // 如果是字符串，检查是否为空字符串
        if (value instanceof String && StrUtil.isBlank((String) value)) {
            return new ValidationError(
                fieldName,
                getRuleType(),
                String.format("字段 [%s] 不能为空字符串", fieldName),
                value,
                null
            );
        }

        return null;
    }

    @Override
    public boolean isValidConfig(String ruleConfig) {
        // 非空校验不需要配置
        return true;
    }
}
